package com.framewiki.example.vo;

import com.cdkjframework.entity.base.BaseVo;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.SchemaProperty;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @ProjectName: com.lesmarthome.bms
 * @Package: com.lesmarthome.bms
 * @ClassName: RmsUser
 * @Description: 登录用户
 * @Author: DESKTOP-U0VVSVK
 * @Version: 1.0
 */

@Data
@Schema(name = " 登录用户")
@EqualsAndHashCode(callSuper = false)
public class RmsUserVo extends BaseVo {

    private static final long serialVersionUID = -1;

    /**
     * 人脸识别编码
     */
    @SchemaProperty(name = "人脸识别编码")
    private String faceCode;
    /**
     * 登录名称
     */
    @SchemaProperty(name = "登录名称")
    @NotEmpty(message = "登录名称不能为空")
    private String loginName;

    /**
     * 验证码
     */
    @SchemaProperty(name = "验证码")
    @NotEmpty(message = "验证码不能为空！")
    private String verifyCode;

    /**
     * 账户类型(1：老人；2：雇员；3、家属；4：志愿者)
     */
    @SchemaProperty(name = "账户类型(1：老人；2：雇员；3、家属；4：志愿者)")
    private String userType;
    /**
     * 账户类型集合
     */
    @SchemaProperty(name = "账户类型集合, 用于查询")
    private List<String> userTypeList;
    /**
     * 账户类型(1：老人；2：雇员；3、家属；4：志愿者)
     */
    @SchemaProperty(name = "账户类型(1：老人；2：雇员；3、家属；4：志愿者)")
    private String userTypeName;
    /**
     * 姓名
     */
    @SchemaProperty(name = "姓名")
    private String displayName;
    /**
     * 密码
     */
    @SchemaProperty(name = "密码")
    @NotEmpty(message = "密码不能为空！")
    private String password;

    /**
     * 旧密码
     */
    @SchemaProperty(name = "旧密码")
    private String oldPassword;

    /**
     * 手机
     */
    @SchemaProperty(name = "手机")
    private String cellphone;
    /**
     * 座机
     */
    @SchemaProperty(name = "座机")
    private String telephone;
    /**
     * 籍贯
     */
    @SchemaProperty(name = "籍贯")
    private String nativePlace;
    /**
     * 民族
     */
    @SchemaProperty(name = "民族")
    private String nation;
    /**
     * 头像
     */
    @SchemaProperty(name = "头像")
    private String headPortrait;
    /**
     * 最后登录时间
     */
    @SchemaProperty(name = "最后登录时间")
    private LocalDateTime lastLoginTime;
    /**
     * 是否锁定
     */
    @SchemaProperty(name = "是否锁定")
    private Integer locked;
    /**
     * 性别(1 男,2 女)
     */
    @SchemaProperty(name = "性别(1 男,2 女)")
    private Integer sex;
    /**
     * 生日
     */
    @SchemaProperty(name = "生日")
    private LocalDate birthday;
    /**
     * 居住详细地址
     */
    @SchemaProperty(name = "居住详细地址")
    private String addressDetails;
    /**
     * 是否可用
     */
    @SchemaProperty(name = "是否可用")
    private Integer enabled;
    /**
     * 当前所在组织ID
     */
    @SchemaProperty(name = "当前所在组织ID")
    private String currentOrganizationId;

    /**
     * 机构类型
     */
    @SchemaProperty(name = "机构类型")
    private Integer organizationType;
    /**
     * 代表是否一张床可以绑定多个人，0 不可以 ，1可以
     */
    @SchemaProperty(name = "代表是否一张床可以绑定多个人，0 不可以 ，1可以")
    private Integer bedMores;
    /**
     * 备注
     */
    @SchemaProperty(name = "备注")
    private String remark;
    /**
     * token
     */
    @SchemaProperty(name = "token")
    private String token;
    /**
     * 返回前端，用于其他平台通过key获取token
     */
    private String tokenKey;

    /**
     * 角色IDs
     */
    @SchemaProperty(name = "角色IDs")
    private List<String> roleIds;

    /**
     * 微信开放id ，用于微信登录
     */
    @SchemaProperty(name = "微信开放id ，用于微信登录")
    private String weChatOpenId;

    /**
     * 小程序获取信息code
     */
    @SchemaProperty(name = "小程序获取信息code")
    private String weChatAppletsJsCode;

    /**
     * 员工编号
     */
    private String jobNumber;

    /**
     * 编号
     */
    private String number;

    /****网点管理用户新增字段***/

    @SchemaProperty(name = "审核状态(审核状态 0.待审核 1.已审核)")
    private Integer auditStatus;

    /**
     * 身份证号码
     */
    @SchemaProperty(name = "身份证号码")
    private String idCard;

    /**
     * 联系地址
     */
    @SchemaProperty(name = "联系地址")
    private String addressContact;

    /**
     * 工作职务id
     */
    @SchemaProperty(name = "工作职务id")
    private String jobTitle;

    /**
     * 工作职务名称
     */
    @SchemaProperty(name = "工作职务名称")
    private String jobTitleName;

    /**
     * 网点名称
     */
    @SchemaProperty(name = "网点名称")
    private String superiorOrganizationName;

    /**
     * 网点id
     */
    @SchemaProperty(name = "网点id")
    private String superiorOrganizationId;

    /**
     * 国际区号
     */
    @SchemaProperty(name = "国际区号")
    private String areaCode;

    /**
		 * 语言类型
		 */
		@SchemaProperty(name = "语言类型")
		private String languageType;

	/**
	 * 设备编码
	 */
	@SchemaProperty(name = "设备编码")
	private String deviceCode;
	/**
	 * 省_id
	 */
	@SchemaProperty(name = "省_id")
	private String provinceId;
	/**
	 * 市_id
	 */
	@SchemaProperty(name = "市_id")
	private String cityId;
	/**
	 * 区（县）id
	 */
	@SchemaProperty(name = "区（县）id")
	private String countyId;

	/**
	 * 是否为忘记密码
	 */
	private Boolean forgetPassword = false;

	/**
	 * 最后修改密码时间
	 */
	private LocalDateTime lastUpdPwdTime;

    /**
     * 加密数据
     */
    private String encryptedData;
    /**
     * 加密向量
     */
    private String iv;
}

